//
//  FiledirectoryUtil.swift
//  SwiftStudyDemoAll
//
//  Created by BINGO on 2019/5/12.
//  Copyright © 2019 mrlong. All rights reserved.
//

import Foundation
class FileDirectoryUtil {
    //整个应用程序各文档所在的目录
    func getHome() -> String {
        let homeDirectory = NSHomeDirectory()
        return homeDirectory
    }
    
    
    // ./Documents 用户文档目录，苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下，iTunes备份和恢复的时候会包括此目录
    func getDocuments() -> String {
        let documentPaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory,
                                                                FileManager.SearchPathDomainMask.userDomainMask, true)
        let documnetPath = documentPaths[0]
        
        return documnetPath
    }
    
    // Library目录  ./Library
    //    这个目录下有两个子目录：Caches 和 Preferences
    //    Library/Preferences目录，包含应用程序的偏好设置文件。不应该直接创建偏好设置文件，而是应该使用NSUserDefaults类来取得和设置应用程序的偏好。
    //    Library/Caches目录，主要存放缓存文件，iTunes不会备份此目录，此目录下文件不会再应用退出时删除
    func getLibrary() -> String {
        let libraryPaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.libraryDirectory,
                                                               FileManager.SearchPathDomainMask.userDomainMask, true)
        let libraryPath = libraryPaths[0]
        return libraryPath
    }
    //Cache目录－方法1
    func getCache() -> String {
        let cachePaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory,
                                                             FileManager.SearchPathDomainMask.userDomainMask, true)
        let cachePath = cachePaths[0]
        
        return cachePath
    }
    
    // ./tmp 用于存放临时文件，保存应用程序再次启动过程中不需要的信息，重启后清空。
    func    getTmp() -> String {
        let tmpDir = NSTemporaryDirectory()
        return tmpDir
    }
    //程序打包安装的目录 NSBundle.mainBundle()
    //工程打包安装后会在NSBundle.mainBundle()路径下，该路径是只读的，不允许修改。
    //所以当我们工程中有一个SQLite数据库要使用，在程序启动时，我们可以把该路径下的数据库拷贝一份到Documents路径下，以后整个工程都将操作Documents路径下的数据库。
    func getNundle() -> Bool {
        //声明一个Documents下的路径
        let dbPath = NSHomeDirectory() + "/Documents/hanggeDB.sqlite"
        //判断数据库文件是否存在
        if !FileManager.default.fileExists(atPath: dbPath){
            //获取安装包内数据库路径
            let bundleDBPath:String? = Bundle.main.path(forResource: "hanggeDB", ofType: "sqlite")
            //将安装包内数据库拷贝到Documents目录下
            //FileManager.default.copyItem(atPath: bundleDBPath!, toPath: dbPath, error: )
            do {
                try FileManager.default.copyItem(atPath: bundleDBPath!, toPath: dbPath)
                return true
            } catch {
                return false
            }
        }else{
            return false
        }
    }
    
    
}
